// XMOL作者信息简化脚本 - 精确版
(function() {
    console.log('XMOL作者信息简化脚本开始运行');
    
    // 使用正确的选择器查找作者容器
    const magazineDiv = document.querySelector('.magazine-gridecontent');
    
    if (!magazineDiv) {
        console.log('未找到magazine-gridecontent元素');
        return;
    }
    
    // 查找所有br标签
    const brTags = magazineDiv.querySelectorAll('br');
    
    if (brTags.length < 2) {
        console.log('br标签数量不足');
        return;
    }
    
    // 找到第二个br标签后面的span元素
    let authorContainer = null;
    let currentElement = brTags[1].nextSibling;
    
    while (currentElement) {
        if (currentElement.nodeType === 1 && currentElement.tagName.toLowerCase() === 'span') {
            authorContainer = currentElement;
            break;
        }
        currentElement = currentElement.nextSibling;
    }
    
    if (!authorContainer) {
        console.log('未找到作者信息容器');
        return;
    }
    
    console.log('找到作者容器:', authorContainer);
    
    // 保存原始HTML内容，用于切换显示/隐藏
    const originalHTML = authorContainer.innerHTML;
    
    // 处理作者列表 - 采用全新策略：先移除sub元素再分割
    function processAuthors() {
        // 创建临时容器来处理HTML，避免修改原始DOM
        const tempContainer = document.createElement('div');
        tempContainer.innerHTML = authorContainer.innerHTML;
        
        // 移除所有sub元素，避免上标中的逗号干扰
        const subElements = tempContainer.querySelectorAll('sub');
        subElements.forEach(sub => sub.remove());
        
        // 获取移除sub元素后的纯文本内容
        const textWithoutSub = tempContainer.textContent.trim();
        
        // 使用逗号分割作者
        const authorNames = textWithoutSub.split(/\s*,\s*/).filter(name => name.trim());
        
        console.log('识别到的作者数量:', authorNames.length);
        
        // 如果作者数量少于等于2，不需要简化
        if (authorNames.length <= 2) {
            return originalHTML;
        }
        
        // 获取第一个和最后一个作者的完整HTML（包含上标）
        const firstAuthor = getAuthorHTMLByName(authorNames[0]);
        const lastAuthor = getAuthorHTMLByName(authorNames[authorNames.length - 1]);
        
        // 返回简化后的HTML：第一作者 + 省略号 + 最后作者
        // 如果无法获取完整HTML，就使用纯文本姓名
        return (firstAuthor || authorNames[0]) + ' <span class="author-ellipsis">...</span> ' + (lastAuthor || authorNames[authorNames.length - 1]);
    }
    
    // 根据作者姓名获取包含上标的完整HTML
    function getAuthorHTMLByName(authorName) {
        // 创建临时容器
        const tempContainer = document.createElement('div');
        tempContainer.innerHTML = authorContainer.innerHTML;
        
        // 遍历所有子节点
        const childNodes = Array.from(tempContainer.childNodes);
        let currentText = '';
        let startIndex = -1;
        let endIndex = -1;
        let inAuthor = false;
        
        for (let i = 0; i < childNodes.length; i++) {
            const node = childNodes[i];
            
            if (node.nodeType === 3) { // 文本节点
                const text = node.textContent;
                currentText += text;
                
                if (!inAuthor && currentText.includes(authorName)) {
                    inAuthor = true;
                    startIndex = i;
                }
                
                if (inAuthor && text.includes(',')) {
                    endIndex = i;
                    break;
                }
            }
            
            if (node.nodeType === 1 && node.tagName.toLowerCase() === 'sub') {
                // 如果正在处理作者且遇到sub标签，也将其包含在内
                if (inAuthor) {
                    currentText += node.textContent;
                }
            }
        }
        
        // 如果没有找到逗号结尾，就处理到最后
        if (inAuthor && endIndex === -1) {
            endIndex = childNodes.length - 1;
        }
        
        // 重建作者的完整HTML
        if (startIndex !== -1 && endIndex !== -1) {
            const authorHTML = document.createElement('div');
            for (let i = startIndex; i <= endIndex; i++) {
                if (childNodes[i].nodeType === 1) {
                    authorHTML.appendChild(childNodes[i].cloneNode(true));
                } else if (childNodes[i].nodeType === 3) {
                    const textNode = document.createTextNode(childNodes[i].textContent);
                    authorHTML.appendChild(textNode);
                }
            }
            return authorHTML.innerHTML.replace(/,$/, '').trim(); // 移除末尾的逗号
        }
        
        return null;
    }
    
    // 创建切换按钮
    function createToggleButton() {
        const button = document.createElement('button');
        button.textContent = '显示全部作者';
        button.style.marginLeft = '10px';
        button.style.padding = '2px 8px';
        button.style.fontSize = '12px';
        button.style.cursor = 'pointer';
        button.style.backgroundColor = '#f0f0f0';
        button.style.border = '1px solid #ccc';
        button.style.borderRadius = '3px';
        
        let isExpanded = false;
        
        button.addEventListener('click', function() {
            if (isExpanded) {
                // 切换回简化显示
                authorContainer.innerHTML = processAuthors();
                button.textContent = '显示全部作者';
            } else {
                // 显示完整作者列表
                authorContainer.innerHTML = originalHTML;
                button.textContent = '简化作者列表';
            }
            isExpanded = !isExpanded;
        });
        
        // 将按钮添加到作者容器之后
        authorContainer.parentNode.insertBefore(button, authorContainer.nextSibling);
    }
    
    // 应用简化显示并创建切换按钮
    if (authorContainer) {
        authorContainer.innerHTML = processAuthors();
        createToggleButton();
        console.log('作者列表简化完成');
    }
})();